/**

Copyright (C) SYSTAP, LLC DBA Blazegraph 2006-2016.  All rights reserved.

Contact:
     SYSTAP, LLC DBA Blazegraph
     2501 Calvert ST NW #106
     Washington, DC 20008
     licenses@blazegraph.com

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
package com.bigdata.rdf.sparql.ast;


import com.bigdata.rdf.sparql.ast.optimizers.TestGroupNodeVarBindingInfo;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

/**
 * Aggregates test suites into increasing dependency order.
 *
 * @author <a href="mailto:thompsonbry@users.sourceforge.net">Bryan Thompson</a>
 * @version $Id$
 */
public class TestAll extends TestCase {

    /**
     * 
     */
    public TestAll() {
    }

    /**
     * @param arg0
     */
    public TestAll(String arg0) {
        super(arg0);
    }

    /**
     * Returns a test that will run each of the implementation specific test
     * suites in turn.
     */
    public static Test suite()
    {

        final TestSuite suite = new TestSuite("AST");

        // Test suite for AST manipulation (mainly for use by hand).
        suite.addTestSuite(TestAST.class);

        // Test suite for static analysis of a set of solutions.
        suite.addTestSuite(TestSolutionSetStats.class);
        suite.addTestSuite(TestSolutionSetStatserator.class);

        // Test suite for methods which determine must/may/not bound vars.
        suite.addTestSuite(TestStaticAnalysis.class);

        // Test suite for canJoin().
        suite.addTestSuite(TestStaticAnalysis_CanJoin.class);

        // Test suite for canJoinUsingConstraints().
        suite.addTestSuite(TestStaticAnalysis_CanJoinUsingConstraints.class);

        // Test suite for join set analysis.
        suite.addTestSuite(TestJoinSetUtil.class);

        // Test suite for AST query rewriters/optimizers.
        suite.addTest(com.bigdata.rdf.sparql.ast.optimizers.TestAll.suite());

//        // Test suite for building a SPARQL expressions from the AST.
//        suite.addTestSuite(TestAST2SparqlGenerator.class);

        /*
         * Test suite for SPARQL named solution sets (bigdata extension).
         * 
         * Note: Most of this stuff is tested using data-driven SPARQL
         * evaluation tests (which are not incorporated into the sub-suite that
         * is being included here).
         */
        suite.addTest(com.bigdata.rdf.sparql.ast.ssets.TestAll.suite());
        
        /*
         * Test suite for DESCRIBE cache.
         * 
         * Note: Most of this stuff is tested using data-driven SPARQL
         * evaluation tests (which are not incorporated into the sub-suite that
         * is being included here).
         */
        suite.addTest(com.bigdata.rdf.sparql.ast.cache.TestAll.suite());
        
        // Test suite for AST evaluation (SPARQL query).
        suite.addTest(com.bigdata.rdf.sparql.ast.eval.TestAll.suite());

        // Stored Query SERVICE.
        suite.addTest(com.bigdata.rdf.sparql.ast.service.storedquery.TestAll.suite());

        // Test for group node var binding info utility class
        suite.addTestSuite(TestGroupNodeVarBindingInfo.class);
        
        return suite;
        
    }
    
}
